package com.ydd.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydd.constant.MessageConstant;
import com.ydd.dto.YddCateDto;
import com.ydd.dto.YddCatePageDto;
import com.ydd.entity.YddCate;
import com.ydd.mapper.YddCateMapper;
import com.ydd.result.Result;
import com.ydd.service.YddCateService;
import com.ydd.vo.YddCateVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author zhangxiaojun
 * @since 2023-05-14
 */
@Service
public class YddCateServiceImpl extends ServiceImpl<YddCateMapper, YddCate> implements YddCateService {

    @Autowired
    YddCateMapper yddCateMapper;

    /**
     * 标签详情
     *
     * @param id
     * @return
     */
    @Override
    public YddCateDto getCateById(Long id) {

        return yddCateMapper.getCateById(id);
    }

    /**
     * 分类删除
     *
     * @param id
     * @return
     */
    @Override
    public boolean deleteById(Long id) {
        return yddCateMapper.deleteById(id) > 0;
    }

    /**
     * 分类修改
     *
     * @param yddCate
     * @return
     */
    @Override
    public boolean updateCate(YddCate yddCate) {
        int rows = yddCateMapper.updateById(yddCate);
        return rows > 0;
    }

    /**
     * 分类添加
     *
     * @param yddCate
     * @return
     */
    @Override
    public boolean addCate(YddCate yddCate) {
        int rows = yddCateMapper.insert(yddCate);
        return rows > 0;
    }

    /**
     * 查询分类列表-全部
     *
     * @return
     */
    @Override
    public List<YddCate> selectCateList() {
        return yddCateMapper.selectCateList();
    }

    /**
     * 广告位分页
     *
     * @param dto
     * @return
     */
    @Override
    public Result YddCateList(YddCatePageDto dto) {
        if (dto == null){
            return Result.error(MessageConstant.UNKNOWN_ERROR);
        }
        IPage<YddCate> page = new Page<>(dto.getPage(),dto.getLimit());

        LambdaQueryWrapper<YddCate> wrapper = new LambdaQueryWrapper<>();

        wrapper.like(YddCate::getCatename,dto.getCatename());

        this.page(page,wrapper);
        YddCateVO vo = YddCateVO.builder()
                .count((int)page.getTotal())
                .totalPages((int)page.getPages())
                .pageSize((int)page.getSize())
                .currentPage((int)page.getCurrent())
                .data(page.getRecords())
                .build();
        return Result.success(vo);
    }
}
